Referring generally to information handling systems, they normally have as their main component a central processing unit (CPU), which directs all communications in the system and orchestrates all commands to be executed by the information handling system. Information handling systems also usually have a network, or networks, of physical connection devices called buses. These networks connect the CPU to any number of peripheral devices so that the CPU can communicate with the peripheral devices.
In order for the CPU to communicate with a particular peripheral device in a multiple bus network, it must be able to locate the correct bus in the network to which the particular peripheral device is connected. Then the CPU must be able to locate the correct peripheral device on that bus with which it intends to communicate.
Accordingly, a computer system that includes a network of multiple buses and peripheral devices must create an "address map" which indicates the location of each bus and peripheral device. The address map is normally created during the start-up or initialization phase of the system which is generally called configuration.
During configuration, the CPU will access a software configuration program stored in the memory of the information handling system that will generate the address map. This configuration program will cause the CPU to access each peripheral device connected into the network to determine the amount of memory that each bridge and peripheral device requires in system memory and their location in the network. Then the CPU will reserve memory registers for each device and bus-to-bus bridge in the system's memory. After the memory locations are set for each device in memory, the configuration software causes the CPU again to access, and to "write" into, each peripheral device in the network the respective addresses of the registers in system memory that are reserved for it.
During normal communication between the CPU and the multiple bus network, each peripheral device is able to communicate with the CPU by either decoding or encoding the addresses of the registers reserved for it in system memory. Accordingly, by assigning memory locations to each peripheral device in the network, the configuration software program creates the address map of the network that is used during normal communication.
A problem exists with this method of creating the address map, however, because configuration software must be able to locate and access each bridge and peripheral device in the network before the address map is created. Thus, a "preliminary map" of the network must exist even before the address map can be created.
One known method used to create this preliminary map is to use another software program that is written to generate the preliminary map for a specific physical configuration of the network. This program then generates the preliminary map each time the computer system is initialized upon start-up. To write such a program, the programmer must know the exact and entire hierarchical and peer configuration of the buses and peripheral devices that comprise the network.
The problem with this method of creating the preliminary map is that it is inflexible. It is often desirable to change the physical configuration of the buses and devices that comprise the multiple bus network. For example, it may be desirable to add certain buses and peripheral devices to enhance the capabilities of the system.
If the preliminary map is created through a program that is specific to one physical configuration of the network, however, each time the location of a bus is changed or a bus or device is removed from the system, the program must be rewritten. Furthermore, the programmer must have detailed knowledge regarding the changes in the physical system configuration and must know the exact location of each bus in the system. In sum, using a software program that is specifically written for a certain physical bus configuration to create the preliminary map is clumsy and time consuming should changes later be required in the physical configuration of the network.
Another method for creating the preliminary map is to actually "hardwire" the preliminary map into each bus-to-bus bridge in the network. Bus-to-bus bridges are the hardware devices used to connect two buses together in the network. Thus, when the system is initialized on start-up the preliminary map of the entire network is already preset and fixed by default.
Inflexibility is an even greater problem when this method is used. In a multiple bus network that uses a hardwired preliminary map, the hardware that provides the location of the bus-to-bus bridges and buses in the map would have to be replaced or "rewired" each time a change in the physical configuration of the network is required.
Accordingly, a method and apparatus for initializing a multiple bus information handling system is needed that generates a preliminary map for buses in a multiple bus network that is not specific to any physical network configuration.
A method and apparatus for initializing a multiple bus information handling system is further needed that will generate a new and different preliminary map for the multiple bus network should changes be implemented in the physical configuration of the system.
Finally, a method and apparatus for initializing a multiple bus information handling system is further needed that does not require any additional hardware or that the preliminary map be hardwired into the network.